package com.example.supermarket.mapper;

import com.example.supermarket.entity.Goods;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;

import java.math.BigDecimal;
import java.util.List;

/**
 * <p>商品表映射器</p>
 * @author Bosen
 * @date 2021/10/8 16:31
 */
@Repository
@Mapper
public interface GoodsMapper {
    /**
     * <p>通过id查找商品名称、价格和图片地址</p>
     * @param id 商品id
     */
    @Select("select id, name, price, image from goods where id = #{id} order by id desc")
    List<Goods> findNameAndPriceAndImageById(@Param("id") int id);

    /**
     * <p>通过商品id获取商品所有信息</p>
     * @param id 商品id
     */
    @Select("select id, name, image, price, `describe` from goods where id = #{id}")
    Goods findById(@Param("id") int id);

    /**
     * <p>获取所有商品的信息</p>
     */
    @Select("select id, name, image, price, `describe` from goods order by id desc")
    List<Goods> findAll();

    /**
     * <p>通过id删除商品</p>
     * @param id 商品id
     */
    @Delete("delete from goods where id = #{id}")
    int deleteById(@Param("id") int id);

    /**
     * <p>添加商品信息<p/>
     * @param name 名称
     * @param image 图片
     * @param describe 描述
     * @param price 价格
     */
    @Insert("insert into goods (name, image, `describe`, price) values (#{name}, #{image}, #{describe}, #{price})")
    int insertGoods(@Param("name") String name, @Param("image") String image, @Param("describe") String describe, @Param("price") BigDecimal price);

    /**
     * <p>修改商品信息<p/>
     * @param name 名称
     * @param describe 描述
     * @param price 价格
     */
    @Update("update goods set name=#{name}, `describe` = #{describe}, price=#{price} where id=#{id}")
    int updateGoods1(@Param("id") int id, @Param("name") String name, @Param("describe") String describe, @Param("price") BigDecimal price);

    /**
     * <p>修改商品信息<p/>
     * @param name 名称
     * @param image 图片
     * @param describe 描述
     * @param price 价格
     */
    @Update("update goods set name=#{name}, image=#{image}, `describe` = #{describe}, price=#{price} where id=#{id}")
    int updateGoods2(@Param("id") int id, @Param("name") String name, @Param("image") String image, @Param("describe") String describe, @Param("price") BigDecimal price);
}
